package cn.kgc.tangcco.service;

import cn.kgc.tangcco.model.PageParam;
import cn.kgc.tangcco.model.ResponseText;
import cn.kgc.tangcco.pojo.Student;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * @author 李昊哲
 * @Description
 * @create 2020/10/30 11:28
 */
public interface StudentService {
    /**
     * 根据ID查找学生信息
     *
     * @param id 学生id
     * @return 学生信息
     */
    ResponseText<Student> findOne(Integer id);

    /**
     * 根据ID查找学生信息
     *
     * @param id 学生id
     * @return 学生信息
     */
    ResponseText<Student> getOne(Integer id);

    /**
     * 根据ID查找学生信息
     *
     * @param id 学生id
     * @return 学生信息
     */
    ResponseText<Student> selectOne(Integer id);

    /**
     * 按照名字模糊查找
     *
     * @param firstName 学生模糊姓名
     * @return 模糊姓名查找返回的学生列表
     */
    public ResponseText<List<Student>> findLike(String firstName);

    /**
     * 修改学生信息
     *
     * @param student 学生信息
     * @return
     */
    public ResponseText<Student> update(Student student);

    /**
     * 使用原生SQL模糊查找某班级的学生信息列表
     *
     * @param student 查询条件 所在班级编号cid 和 姓名firstNameuo或lastName
     * @return 模糊查找某班级的学生信息列表
     */
    public ResponseText<List<Student>> nativeQuery(Student student);

    /**
     * 学生登录 使用手机号密码
     *
     * @param student 登录条件 手机号和密码
     * @return 登录信息
     */
    ResponseText<Student> loginByMobileAndAuthText(Student student);

    /**
     * 按照名字模糊查找
     *
     * @param firstName 学生模糊姓名
     * @return 模糊姓名查找返回的学生列表
     */
    public ResponseText<List<Student>> specificationLike(String firstName);

    /**
     * 分页显示数据
     *
     * @param student   查询条件 主要班级编号 和 姓名
     * @param pageParam 分页参数
     * @return 分页后的数据
     */
    public Page<Student> page(Student student, PageParam pageParam);

}
